function  [w,b,sup]=SVM(up,down)
%up是正实例点，一行一个
%down是负实例点，一行一个
%w是w向量
%b是b

%整合数据
data=[up.*1;down.*-1];

H=data*data';%计算H

c=-ones(1,size(data,1));%计算c

A2=[ones(1,size(up,1)),-ones(1,size(down,1))];%计算A2

%误差减小
option=optimoptions(@quadprog,'ConstraintTolerance',1e-15,'OptimalityTolerance',1e-15,'StepTolerance',1e-15);
a=quadprog(H,c,[],[],A2,0,zeros(size(data,1),1),[],[],option);%二次规划

sup=find(a>1e-12);

w=a'*data;%计算w
b=1-w*data(sup(1),:)';%计算b

end